sealed class Message { abstract val messageId: String } data class Track(val event: String, override val messageId: String): Message()